LeetCode - 020 - 有效的括号(valid-brackets)
# LeetCode - 020 - 有效的括号(valid-brackets)
[TOC]
# 一、题目
# 二、解题思路·栈
- 算法
- 初始化栈 S,依次处理表达式的每个括号。
- 如果遇到开括号,我们只需将其推到栈上即可。这意味着我们将稍后处理它,让我们简单地转到前面的 子表达式。
- 如果我们遇到一个闭括号,那么我们检查栈顶的元素。如果栈顶的元素是一个 相同类型的 左括号,那么我们将它从栈中弹出并继续处理。否则,这意味着表达式无效。
- 如果到最后我们剩下的栈中仍然有元素,那么这意味着表达式无效。
# 三、算法实现
var isValid = function(s){
if(!s.length) return true;
if(s.length === 1) return false;
let judge = {
'[':']',
'(':')',
'{':'}'
};
let param = s.split('');
let len = param.length;
let stack = [];
for(let i = 0;i<len;i++){
if(!stack.length){
if(param[i] === ']'||param[i] === ')'||param[i] === '}'){
return false;
}else{
stack.push(param[i]);
i++;
}
}
if(judge[stack[stack.length-1]] === param[i]){
stack.pop();
}else{
stack.push(param[i]);
}
}
if(stack.length === 0) return true;
else return false;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31